package interview.huawei.tjt.training.dongtaiguihua;

import java.util.Scanner;

/**
 * 给定一个字符串，你的任务是计算这个字符串中有多少个回文子串。
 *
 * 具有不同开始位置或结束位置的子串，即使是由相同的字符组成，也会被视作不同的子串。
 *
 * 示例 1：
 *
 * 输入："abc" 输出：3 解释：三个回文子串: "a", "b", "c"
 *
 * 示例 2：
 *
 * 输入："aaa" 输出：6 解释：6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
 *
 * 提示：
 *
 * 输入的字符串长度不会超过 1000 。
 */
// 双指针法
public class CountSubstrings {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int result = 0;
        for (int i = 0; i < s.length(); i ++) {
            result += isSub(s, i, i);
            result += isSub(s, i, i + 1);
        }
        System.out.println(result);
    }

    private static int isSub (String s, int l, int r) {
        int result = 0;
        while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
            l --;
            r ++;
            result ++;
        }
        return result;
    }

}
